package com.pisolution.scheduler.remote.utils;

import io.netty.channel.epoll.Epoll;

import java.util.Locale;

/**
 * 辅助创建客户端与服务端的工具类.
 *
 * @author sora
 * @version 0.1.0
 */
public final class NettyUtils {
    // -------------------------------------------------------------------------------------------------
    //  环境检测
    // -------------------------------------------------------------------------------------------------

    /**
     * 确认epoll技术是否可用.
     *
     * @return 如果可用则返回 {@code true} 否则返回 {@code false}.
     */
    public static boolean useEpoll() {
        // 1. 检测目标操作系统 epoll为linux下的技术 对应于windows iocp.
        if (!System.getProperty("os.name").toLowerCase(Locale.US).contains("linux")) {
            return false;
        }

        // 2. 检测epoll是否可用.
        if (!Epoll.isAvailable()) {
            return false;
        }

        // 3. 检查epoll开关.
        return Boolean.parseBoolean(System.getProperty("netty.epoll.enable", "true"));
    }

    // -------------------------------------------------------------------------------------------------

    /** 阻止实例化. */
    private NettyUtils() {
    }
}
